<?php
/**
 * Created by PhpStorm.
 * User: 熊伟洋
 * Date: 17-4-10
 * Time: 上午9:07
 * Email:chelious@foxmail.com
 * QQ/WeChat:434493420
 * 函数库
 */

/**
 * 头部
 */
header('Content-type:text/html;charset=utf-8');

/**
 * 设置时区
 */
date_default_timezone_set('PRC');


/**
 * @param $data
 * 打印函数
 */
function dd($data)
{
	echo "<pre style='padding: 15px;background: #ccc;border-radius: 6px'>";
	if (is_null($data)) {
		var_dump($data);
	} elseif (is_bool($data)) {
		var_dump($data);
	} else {
		print_r($data);
	}
	echo '</pre>';
}


/**
 * 判断提交方式
 */
define('IS_POST', ($_SERVER['REQUEST_METHOD'] == 'POST') ? true : false);

/**
 * @param $msg 提示信息
 * @param $url 跳转地址
 * 提示跳转
 */
function message($msg, $url)
{
	$str = <<<str
<script>
alert("$msg");
location.href = "$url";
</script>
str;
	echo $str;
	die;
}

/**
 * @param $action
 * @return mixed
 * 获得程序运行时间
 */
function get_runtime($action)
{
	static $time;//存储第一次执行的时间
	if ($action == 'start') {
		$time = microtime(true);//最开始的时间
	} else if ($action == 'end') {
		return microtime(true) - $time;
	} else {
		die('请输入正确的口令,例如start或者end');
	}
}

/**
 * @param $arr
 * @param int $case
 * @return array
 * 多维数组键名的大小写转换
 */
function chang_case($arr, $case = CASE_UPPER)
{
	$newArr = array_change_key_case($arr, $case);
	foreach ($newArr as $k => $v) {
		//当键值是一个数组的时候
		if (is_array($v)) {
			$newArr[$k] = chang_case($v);
		}
	}
	return $newArr;
}

/**
 * 配置项文件,执行四种操作，最多两个参数，默认参数为空
 * 1.载入配置项
 * C($userConfig)/C($sysConfig)
 * 2.读取配置项，将值返回
 * C('CODE_LEN')
 * 3.修改配置项
 * C('CODE_LEN',4)
 * 4.获得所有配置项
 * C()
 */
function C($var=null,$value=null){
//1.载入配置项，判断配置项中是否是一个数组，并让用户配置项的优先级高于系统配置项的优先级
//       方法：系统配置项优先调用C函数，用static变量存储，用户配置项再次调用C函数时，将二者合并，
//             后者会覆盖前者
    static $config = [];
    if(is_array($var)){
        $config = array_merge($config,$var);
        return;
    }


    //判断是否是一个字符串,再判断值是否为空，若为空，一个参数，则是读取配置项，若不为空，两个参数，则是修改配置项
    if(is_string($var)){
        if(is_null($value)){
            //2.读取配置项(一个参数)
            return isset($config[$var])?$config[$var]:null;
        }else{
            //3.设置配置项
            return $config[$var]=$value;
        }
    }

    //4.获得所有配置项（无参数）
    if(is_null($var)&&is_null($value)){
        return $config;
    }

}